package com.xuanyuan.lottiedemo

import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.TextDelegate
import com.xuanyuan.lottiedemo.databinding.ActivityMainBinding

/**
 * @author LUOFAXIN
 */
class MainAcitivty : AppCompatActivity() {
    private val binding: ActivityMainBinding  by viewBinding()

    var animationView: LottieAnimationView? = null
    var context: Context? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
        super.onCreate(savedInstanceState)


//        setContentView(R.layout.activity_main)
        context = this
        initView()

        dynamicTextView();

    }

    private  fun  dynamicTextView(){
        val textDelegate = TextDelegate(binding.dynamicTextView)
        binding.nameEditText.addTextChangedListener(object: TextWatcher {
            override fun afterTextChanged(s: Editable?) {
                textDelegate.setText("NAME", s.toString())
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
        })
        binding.dynamicTextView.setTextDelegate(textDelegate)
    }

    @SuppressLint("ResourceType")
    private fun initView() {
        val animationView: LottieAnimationView =binding.lottieAnimationView

        // json文件加载完成监听
        animationView.addLottieOnCompositionLoadedListener {  }
        //监听动画播放进度
        animationView.addAnimatorUpdateListener {  }

//            findViewById(R.id.lottieAnimationView)
        //在assets目录下的动画json文件名。
      animationView.setAnimation("face.json");
//        animationView.setImageResource(R.raw.face)
        //      animationView.setAnimationFromUrl("https://lottiefiles.com/60170-search");
        //设置动画循环播放
        animationView.loop(true)
        //assets目录下的子目录，存放动画所需的图片
//      animationView.setImageAssetsFolder("images/");
        animationView.playAnimation() //播放动画
    }

    /**
     * 你可以随意控制动画的时常，动画的播放进度，动画的各种状态等。
     */
    private fun initData() {
        //在assets目录下的动画json文件名
        animationView?.setAnimation("tets.json")
        //        animationView.setImageAssetsFolder("test.json");
        //设置动画循环播放
        animationView?.loop(true)
        //      //assets目录下的子目录，存放动画所需的图片
//      animationView.setImageAssetsFolder("images/");

        // Do something.动画正在运行
        if (animationView!!.isAnimating()) {
        }

        //progress范围0~1f，设置动画进度
        animationView!!.setProgress(0.5f)

        // 自定义动画时长，此处利用ValueAnimator值动画来实时更新AnimationView的进度来达到控制动画时长。
//        ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(500);
//        // 动画监听
//        animator.addUpdateListener(animation -> {
//            animationView.setProgress((Float) animation.getAnimatedValue());
//        });
//        animator.start();//启动动画

        //播放动画
        animationView!!.playAnimation()
        //取消动画
        animationView!!.cancelAnimation()
    }
}